﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QL_DTTN.DTO;
namespace QL_DTTN
{
    public partial class KetNoiDatabase : Form
    {
        public bool isConnected = false;
        public bool _reconnect = false;

        public KetNoiDatabase()
        {
            InitializeComponent();
        }
        private ConnectionSQL getConnecSQL()
        {
            ConnectionSQL sql ;
            if (ckxAuth.Checked)
            {
                sql = new ConnectionSQL(txtSever.Text, txtDatabase.Text);
            }
            else
            {
                sql = new ConnectionSQL(txtSever.Text, txtDatabase.Text, txtUser.Text, txtPassword.Text);
            }
            return sql;
        }
        private bool kiemTra()
        {
            if (txtSever.Text.Trim()=="")
            {
                MessageBox.Show("Chưa nhập severName!");
                return false;
            }
            if (txtDatabase.Text.Trim()=="")
            {
                MessageBox.Show("Chưa nhập DatabaseName!");
                return false ;
            }
            if (!ckxAuth.Checked)
            {
                if (txtUser. Text.Trim() == "")
                {
                    MessageBox.Show("Chưa nhập UserName!");
                    return false;
                }
                if (txtPassword. Text.Trim() == "")
                {
                    MessageBox.Show("Chưa nhập Password!");
                    return false;
                }
            }
            return true;
        }
        private void btnKiemTra_Click(object sender, EventArgs e)
        {
            ConnectionSQL conSQL = getConnecSQL();
            if (!kiemTra())
            {
                return;
            }
            if (ConnectionSQL.TestConnection(conSQL))
            {
                MessageBox.Show("Chuỗi kết nối hợp lệ!");
            }
            else
            {
                MessageBox.Show("Thông tin nhập chưa đúng!");
            }
        }

        private void btnKetNoi_Click(object sender, EventArgs e)
        {
            ConnectionSQL conSQL =getConnecSQL();
            if (!kiemTra())
            {
                return;
            }
            if (ConnectionSQL.TestConnection(conSQL))
            {
                conSQL.SeverName = Functions.Enrcode(conSQL.SeverName);
                conSQL.DatabaseName = Functions.Enrcode(conSQL.DatabaseName);
                conSQL.UserName = Functions.Enrcode(conSQL.UserName);
                conSQL.Password = Functions.Enrcode(conSQL.Password);
                if (ConnectionSQL.CreateDirectoryConnection(conSQL))
                {
                    if (ConnectionSQL.TestConnection())
                    {      
                         MessageBox.Show("Kết nối thành công!");
                         isConnected = true;
                    }
                    else
                    {
                        MessageBox.Show("Kết nối thất bại!");
                        isConnected = false;
                    }
                  this.Close();
                }
                else
                {
                    MessageBox.Show("Tạo file Config thất bại!");
                    isConnected = false;
                }

            }
            else
            {
                MessageBox.Show("Thông tin nhập chưa đúng!");
                isConnected = false;
            }
        }
        private void KetNoiDatabase_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (!isConnected && !_reconnect)
                Application.Exit();
        }
        private void btnHuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ckxAuth_CheckedChanged(object sender, EventArgs e)
        {
            if (!ckxAuth.Checked)
            {
                txtUser.Enabled = true;
                txtPassword.Enabled = true;
            }
            else
            {
                txtUser.Enabled = false;
                txtPassword.Enabled = false;
            }
        }
    }
}
